home *** CD-ROM | disk | FTP | other *** search
- Minix ST 1.5.10 upgrade guide
- -- Howard Chu, July 1990
-
-
-
- INTRODUCTION
-
- This document is part of a kit for upgrading your stock, unmodified
- Minix ST 1.1 system to version 1.5.10, the latest official ST version.
- The kit goes straight to 1.5.10 with no stops along the way... Please
- read this entire document before doing anything to your system. We'll
- both be happier for it in the end.
-
- This kit is basically a synthesis of all the work done by Frans Meulenbroeks,
- who posted the original upgrade material. His ":Install" installation
- guide is also included here, you should read the introduction there for
- more background info, restrictions, copyright, etc.
-
- HARDWARE REQUIREMENTS
-
- I did this upgrade on a system with a hard drive. I don't really want to
- think about doing it on a floppy-only system. I've tried, and it makes my
- brain hurt. The entire upgrade package compresses down to a 2.5 megabyte
- compressed tar file. You'll need nearly 6 megabytes of space to extract
- everything. You'll need around another 2.5 megabytes for all the resulting
- binary files. I worked out this package on a Unix system, and downloaded
- files to a TOS partition to be retrieved later (using tosread in Minix).
- If you don't have 10 megabytes of disk space attached to your ST you
- might consider splitting things up on a Unix box before going to your ST.
- This will be practical for a system with two double-sided disk drives,
- as the largest directory is only 500K (Kermit source).
-
- SETTING UP
-
- The whole kit consists of three parts, including this document. The other
- two parts are:
- up1510a.tar - 1.5 binaries necessary for the upgrade
- up1510b.tar - the complete 1.5.10 upgrade files.
-
- I suggest extracting the up1510a tar file into your /tmp directory,
- and moving the files to their proper place from there. There are two
- versions of cv in this tar file, a 1.1 and a 1.5 version. I'm not sure
- that the 1.1 version works very well... I think you will need the 1.5
- version to create kernel.mix from kernel.out. (Sorry, when I got to this
- stage things weren't working very well and I didn't keep good track of
- what the problems were...) At any rate, you may want to grab the source
- for the version 1.1 cv from the 1.1fixes file (also available on terminator,
- er, atari.archive.umich.edu, the same place you found this stuff...). If
- you compile that on your 1.1 system before doing this upgrade, you will
- have a good, usable version 1.1 cv.
-
- The up1510b.tar file is meant to be extracted into /usr of your Minix
- filesystem. You need to make some preparations before this, of course.
- You will only need a few parts of the 1.1 source tree, and none of the
- include directory. I suggest renaming them, just to keep them handy in
- case you have trouble with the upgrade.
-
- mv /usr/src /usr/src1.1
- mv /usr/include /usr/include1.1
- mv /usr/lib/libc.a /usr/lib/libc1.1.a
-
- You should then make a new /usr/src directory, and copy a few files
- from /usr/src1.1 to it.
-
- mkdir /usr/src /usr/src/commands /usr/src/lib /usr/src/lib/M68000
- cp /usr/src1.1/commands/dd.c /usr/src/commands
- cpdir /usr/src1.1/commands/mined /usr/src/commands/mined
- cpdir /usr/src1.1/commands/sh /usr/src/commands/sh
- cp /usr/src1.1/lib/*.s /usr/src/lib/M68000
- cpdir /usr/src1.1/fs /usr/src/fs
- cpdir /usr/src1.1/kernel /usr/src/kernel
- cpdir /usr/src1.1/mm /usr/src/mm
-
- That's it for reusing 1.1 sources. Everything else is included here, as well
- as some patches to the above-mentioned source files. As mentioned before,
- you should also have the patch program from the 1.1 fixup posting. If you're
- feeling particularly brave, or confident that you have all your 1.1 stuff
- backed up safely on floppy, you can simply move the appropriate files to
- their new destinations instead of copying them.
-
- You will also need to rename a few of the .s source files in the M68000
- directory.
- cd /usr/src/lib/M68000
- mv stbrksz.s brksize.s
- mv stcrtso.s crtso.s
- mv stend.s end.s
- mv sthead.s head.s
- mv stsetjmp.s setjmp.s
- mv stsndrec.s sendrec.s
-
- If you have enough memory, you should create a system with a huge RAM disk.
- If you can fit all of the compiler files onto it, the compilation step will
- go a lot faster. (Probably talking around a 700K RAM disk here. 270K is
- used for /lib.)
- /bin/ar - needed after the new library is done
- /bin/as - needed for all compiles
- /bin/cat - helpful for applying the patches
- /bin/cc - needed for all compiles
- /bin/chmem - needed for most commands
- /bin/chmod - needed for some commands
- /bin/compress - actually zcat - for setup
- /bin/cp - needed for some commands
- /bin/cpdir - helpful in setup
- /bin/echo - needed for many commands (used in makefile)
- /bin/ln - needed for some installation steps
- /bin/ls - helpful
- /bin/make - needed for all compiles
- /bin/mkdir - setup
- /bin/mv - needed for library
- /bin/rm - needed for some pieces
- /bin/sh - needed for everything
- /bin/tar - setup
- /bin/tos... - setup
- /lib/cem
- /lib/cg
- /lib/cpp
- /lib/cv - all parts of the compiler
- /lib/ld
- /lib/opt
-
-
- CONFIGURING THE TOOLS
-
- These are the recommended amounts of memory for each of the compiler tools:
-
- cc 20000
- cpp 30000
- cv 50000
- as 50000
- ld 100000
- cem 110000
- cg 30000
- opt 60000
- sh 20000
-
- INSTALLATION PROCESS
-
- 1. go to /usr, extract the up1510b.tar file.
- I recommend leaving the file compressed on a TOS partition, to save
- space. Extract with something like:
- tosread hd0a minix/upgrade.z | zcat | tar x -
- (you will need the binary of tar included in up1510a.tar, which allows
- reading from stdin instead of a named file.) The file Total.crc has the
- full crc values for what you should have *after* applying the patches
- that are also included. The directories containing patches have a file
- Diff.crc containing the crc values for all the patches. You shouldn't
- need to check these values, since any corruption would cause either/both
- zcat or tar to fail.
- [Another note - I named my hard drive devices:
- hd00 - block 0 hd10 = 2nd drive, hd20 = 3rd drive
- hd0a - 1st partition hd1a = 2nd drive, hd2a = 3rd drive
- hd0b - 2nd partition ... etc...
- hd0c - 3rd partition
- hd0d - 4th partition
- hd0e - entire disk]
- 2. cd /usr/include/minix
- edit the config.h file. you may want to edit boot.h, but I have no idea
- what you'd want to stick in there.
- 3. cd /usr/src/lib; make
- 4. mv libc.a /usr/lib
- If you're short on space, you can remove the .o files after any
- successful compilation step.
- 4a. You may want to make the new version of make at this point. It'll come
- in handy for the following compilation.
- cd /usr/src/commands/make; make; mv make /bin
- 5. cd /usr/src/fs; cat *.D | patch
- If you get any rejects, use the crc program from up1510a and compare
- the crc values for the .D diff files with the values in Diff.crc.
- If you're really short on space, you can "rm *~ *.D Diff.crc" after
- running patch.
- make
- 6. cd /usr/src/kernel; cat *.D | patch; make
- 7. cd /usr/src/mm; cat *.D | patch; make
- 8. cd /usr/src/tools; make
- 9. copy the files from /usr/etc to /etc. If /etc is on the ram disk, make
- sure you copy the files to the real disk that the ram disk was loaded
- from. You may want to edit the passwd file as well. I wasn't able to
- log in as root after the upgrade, so I dropped back and blanked out the
- root password in the new passwd file. You may also want to edit the rc
- file to suit your system.
- If your minix.img is larger than 0x40000 bytes (due to allocating more
- buffer cache in /usr/include/minix/config.h) you will have to change the
- value of ldaddr in boot.s, then remake minix.img.
- copy the minix.img file to a disk.
- 10. cd /usr/src/test; make
- 11. cd /usr/src/commands; patch < *.D
- (there's only one .D diff file here.)
- 12. cd mined; cat *.D | patch
- 13. cd ../sh; cat *.D | patch
- 14. cd .. (run make in /usr/src/commands)
- You may want to go out for a while. libc took a long time, and the
- other directories were so-so, but this is gonna go for *hours*...
- Also, the official makefile doesn't make it particularly easy to
- install the compiled files. I've put a slightly modified Makefile.hyc
- here, that puts the newly created executables in /usr/src/commands/bin.
- You can sort out the new binaries more easily with my makefile.
- Decide what you want to do, then maybe type "make -f Makefile.hyc"
- or just "make," then find something else to do.
-
- 15. Back already, huh? Hopefully nothing died in the middle of things. You
- should now be ready to install all the new commands into your /bin and
- /usr/bin directories. You may want to keep backups of the 1.1 commands,
- just in case. Make sure you install the new stuff on the real disk for
- /bin, if /bin is a ram disk. I did something like the following:
- mv /usr/bin /usr/bin1.1
- mount /dev/hd0c /user
- mv /user/bin /usr/rootbin1.1
- mkdir /usr/bin /user/bin
- cd /usr/bin1.1
- for i in *;do mv /usr/src/commands/bin/$i /usr/bin; done
- cd /usr/rootbin1.1
- for i in *;do mv /usr/src/commands/bin/$i /user/bin; done
- This preserved the layout of my original /bin and /usr/bin allocation.
- You'll still have some files in /usr/src/commands/bin to move.
- There will also be one or two 1.1 commands you can say goodbye to, like
- uudecode and uuencode which are replaced by uud and uue, respectively.
- 16. Go to the dev directory on the real root disk and execute the Makedev
- script from the /usr/src/tools directory. There was a typo in the official
- distribution, causing tty1 (the serial port) not to be made. It's fixed
- in this copy of Makedev.
- 17. Boot the new kernel.
- If all went well, you're now running Minix 1.5.10. (There, that wasn't
- so bad, was it? }-)
- 18. Ok, unfinished business. Move tos.arc to a TOS disk, and unarc it on your
- Minix TOS disk.
- 19. (optionally) Run the tests in /usr/src/test. Tests 17, 18, and 20 seemed
- to fail miserably on my system. Oh well.
- 20. Read thru the /etc/setup_usr script. You'll want to create the new
- /usr/adm and /usr/spool directories.
- 21. You need to do some fiddling to get the ps command working. ps tries to
- read the symbol tables of /usr/src/fs/fs.mix, /usr/src/kernel/kernel.mix,
- and /usr/src/mm/mm.mix. The distributed makefiles don't leave the symbol
- tables intact in the .mix files. I think the ast command will come in
- handy here, but I haven't tried it. Instead, I added the flags
- -a0:2 -a1:2 -a2:2 -a3:3
- to the ld command line, and remade the .out and .mix files. That worked
- fine, and ps was happy after that. (It appears that you should feed the
- output of "anm kernel.out" to ast, and use it on kernel.mix. I dunno.)
-
- I think that's it. If you have a hard drive, this installation should be
- pretty painless. If not, well... Go ahead and try it and tell me how you
- did things. If patch rejects any of the diffs, you probably didn't use the
- original 1.1 source. The contents of up1510b.tar are completely in sync with
- the PC 1.5.10 sources, except for the kernel and two header files. (a.out.h
- and out.h). Only binaries are provided for elle, you should be able to get
- the sources from another Minix archive.
-
- Ok. Any feedback is welcome, let me know how things went.
- -- Howard Chu
- hyc@math.lsa.umich.edu
-